module.exports = {
    // 根据条件基础查询
    find(col,where={},column={}){
        return new Promise((resolve,reject)=>{
            col.find(where,column,(err,data)=>{
                if(err) reject(err);
                resolve(data);
            })
        })
    },
    // 新增数据
    insert(col,data){
        return new Promise((resolve,reject)=>{
            col.insertMany(data,err=>{
                if(err) reject(err);
                resolve();
            })
        })
    },
    // 删除数据
    delete(col,where,num=1){
        // num参数表示删除单条还是多条：1表示单条，非1表示多条
        // deleteOne
        // deleteMany
        let type = num===1 ? "deleteOne" : "deleteMany";
        return new Promise((resolve,reject)=>{
            col[type](where,err=>{
                if(err) reject(err);
                resolve();
            })
        })
    },
    // 修改数据
    update(col,where,data,num=1){
        let type = num===1 ? "updateOne" : "updateMany";
        return new Promise((resolve,reject)=>{
            col[type](where,data,err=>{
                if(err) reject(err);
                resolve();
            })
        })
    },
    // 分页
    page(col,where={},column={},num,index){
        return new Promise((resolve,reject)=>{
            col.find(where,column).limit(num).skip(index*num).exec((err,data)=>{
                if(err) reject(err);
                resolve(data);
            })
        })
    },
    // 排序
    sort(col,where={},column={},sortWhere){
        return new Promise((resolve,reject)=>{
            col.find(where,column).sort(sortWhere).exec((err,data)=>{
                if(err) reject(err);
                resolve(data);
            })
        })
    },
    // 查询数据的个数
    count(col){
        return new Promise((resolve,reject)=>{
            col.countDocuments().exec((err,data)=>{
                if(err) reject(err);
                resolve(data);
            })
        })
    },
    // 查询分类
    distinct(col,column){
        return new Promise((resolve,reject)=>{
            col.distinct(column).exec((err,data)=>{
                if(err) reject(err);
                resolve(data);
            })
        })
    },
    // 查询最大页码
    maxPage(col,num){
        return this.count(col).then(data=>{
            return new Promise((resolve)=>{
                resolve(Math.ceil(data / num));
            })
        },err=>{
            console.log(err);
        })
    }
}